package persistencia.facturas;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import modelo.Factura;
import modelo.enums.Tarifa;
import modelo.utils.ListaFacturas;

public class BDFacturaImpl implements BDFactura {

	private static final int CANTIDAD = 10;
	private List<Factura> facturas;

	public BDFacturaImpl() {
		super();
		initDB();
	}

	private void initDB() {
		facturas = new ArrayList<Factura>();
		for (int i = 0; i < CANTIDAD; i++) {
			insert(new Factura(i, i + 5, Tarifa.NORMAL, new Date(),
					Integer.toString(i), Integer.toString(i)));
		}
	}

	@Override
	public ListaFacturas getAll() {
		return new ListaFacturas(facturas);
	}

	@Override
	public Factura findByCode(int codigo) {
		for (Factura factura : facturas)
			if (factura.getCodigo() == codigo)
				return factura;
		return FACTURA_NULL;
	}

	@Override
	public boolean update(Factura factura) {
		Factura enLista = findByCode(factura.getCodigo());
		if (enLista != null) {
			enLista.actualiza(factura);
			return true;
		}
		return false;
	}

	@Override
	public boolean delete(int codigo) {
		Factura factura = findByCode(codigo);
		if (factura == FACTURA_NULL)
			return false;
		else
			facturas.remove(factura);
		return true;
	}

	@Override
	public void insert(Factura factura) {
		facturas.add(factura);
	}

}
